package com.ls.mq.iterface;

/**
 * 负责发送消息，直接面向客户的使用者<br>
 * 带有send的是一对一发送，publish开头的是一对多发送<p>
 * 间接发送和直接发送：<br>
 * 间接发送：发送对对方，以message封装方式传送，到对方后解析actor做相应处理，如果要返回，则根据message获取返回channel，把结果返回对方
 * <br>
 * 直接发送：直接把消息发送到channel中，在channel端的接收者知道如何处理 <p>
 * 客户端应该获取一个actorref，它至少应该包括receiver channel,然后交由actorref发送消息<br>
 *  <p>
 *  带有返回结果的发送信息，要求src 端的channel生成全局唯一的channel，然后等待channel返回结果Object
 * @author Administrator
 */
public interface ActorRef {
	/**
	 * 
	 */
	void send(Object request);

	void sendDirectly(String msg);

	Object sendWithReply(Object request);

	Object sendWithReply(Object request, int timeout);

	IMQFuture asyncSendReply(Object request);

	IMQFuture asyncSendReply(Object request, int timeout);

	void publish(Object request);

	void replyUnsafe(Object response);

	void setTimeout(int timeout);
}
